package com.finance.console.common;

import java.util.Scanner;

public class ConsoleInput {
    private static final Scanner scanner = new Scanner(System.in);

    // 获取整数输入（支持范围校验）
    public static int getInt(String prompt, int min, int max) {
        while (true) {
            int num = getInt(prompt);
            if (num >= min && num <= max) {
                return num;
            }
            System.out.printf("请输入%d-%d之间的数字：", min, max);
        }
    }

    // 基础整数输入
    public static int getInt(String prompt) {
        System.out.print(prompt);
        while (!scanner.hasNextInt()) {
            System.out.print("输入错误（需为整数），请重新输入：");
            scanner.next();
        }
        int result = scanner.nextInt();
        scanner.nextLine(); // 清空缓冲区
        return result;
    }

    // 获取字符串输入（非空校验）
    public static String getString(String prompt) {
        while (true) {
            System.out.print(prompt);
            String input = scanner.nextLine().trim();
            if (!input.isEmpty()) {
                return input;
            }
            System.out.print("输入不能为空，请重新输入：");
        }
    }

    // 获取金额输入（正数）
    public static double getAmount(String prompt) {
        while (true) {
            System.out.print(prompt);
            if (scanner.hasNextDouble()) {
                double amount = scanner.nextDouble();
                scanner.nextLine();
                if (amount > 0) {
                    return amount;
                }
                System.out.print("金额需为正数，请重新输入：");
            } else {
                System.out.print("输入错误（需为数字），请重新输入：");
                scanner.next();
            }
        }
    }
}